#ifndef __RECKON__STOPWATCH_IMPLEMENTATION_H__
#define __RECKON__STOPWATCH_IMPLEMENTATION_H__

#include "reckon/IStopWatch.h"
#include "boost/date_time.hpp"

namespace reckon
{
	class StopWatchImpl : public IStopWatch
	{
		// ctor / dtor
	public:
		StopWatchImpl(IStopWatch::Type t);

	public:
		virtual ~StopWatchImpl();

	public:
		virtual void initTime();

		virtual f64 spanTime();

		virtual f64 totalSpanTime(bool bCallSpanTime = true);

	private:
		boost::posix_time::ptime _refTime;
		boost::posix_time::ptime _checkTime;
		f64 _sumSpanTime;
		f64 _den;
	};

}

#endif // __RECKON__STOPWATCH_IMPLEMENTATION_H__